x^=0x8000
算法
把signed(word)变量转换为unsigned(word)的算法,分析整理。
分析
方便分析 x^=0x8000 -> DEST = SRC^0x8000
关键数据点:
- SRC = 0x0000 -> DEST = 0x000^0x8000 -> DEST=0x8000
- SRC = 0x7FFF -> DEST = 0x7FFF^0x8000 -> DEST=0xFFFF
- SRC = 0x8000 -> DEST = 0x8000^0x8000 -> DEST=0x0000
- SRC = 0xFFFF -> DEST = 0xFFFF^0x8000 -> DEST=0x7FFF
- 如果将SRC作为unsigned考虑,并且作为X轴,蓝色线段以SRC表示的值(signed)为Y轴,红色线段以DEST值表示的值(unsigned)为Y轴。
- 如果将SRC作为signed考虑,并且作为X轴,蓝色线段以SRC表示的值(signed)为Y轴,红色线段以DEST值表示的值(unsigned)为Y轴。
总结
SRC、DEST线段在Y轴上的投影可以想象成在数轴上,DEST的投影相对于SRC向正方向移动了0x8000,但投影的长度不变。
在没分析之前的认为DEST=SRC+0x8000就能解决问题。真是愚不可及。
EOF
评论框君很顽皮,需要科学上网才能看到哦!~
关注微信公众号(MarIxs)也能联系到我哦!